Последние изменения - Поиск:

edit SideBar

АктОб

ДАННАЯ ВИКИ УСТАРЕЛА. ДОКУМЕНТАЦИЯ ТЕПЕРЬ НАХОДИТСЯ В РЕПОЗИТОРИИ ЯОС, НАПРИМЕР,

https://gitlab.com/budden/jaos/-/blob/яос/док/яп-активный-оберон/оглавление.md

Официальная документация (в разработке)

http://cas.inf.ethz.ch/projects/a2/repository/raw/trunk/LanguageReport/OberonLanguageReport.pdf (см. ИсточникиИнформацииОбА2)

Особенности языка

Активный оберон является паскале-образным языком с такими особенностями:

  • точная (на 2020-й год) сборка мусора, не двигающая объекты
  • также возможно размещение объектов на стеке и в статической памяти
  • Обычно в AO нет адресной арифметики, есть настоящие массивы, а правильность указателей гарантируется языком. Контроль доступа к элементам массива нельзя отключить. Однако при импорте модуля SYSTEM все опасные возможности доступны
  • ассемблерные вставками
  • конструкция await и синхронизация мониторами
  • Код организован в модули. Исходный текст модуля может быть прочитан компилятором из разных источников, но при сборке A2 модули содержатся в файлах. В одном файле может содержаться один или более модулей. Модуль не может быть распределён по нескольким файлам
  • Модули зависят друг от друга, образуя дерево
  • Сущность из другого модуля всегда квалифицируется его именем или псевдонимом
  • Модули могут экспортировать интерактивные команды, способные читать свои параметры из строки вызова
  • В модулях поддерживаются открытые, закрытые и частично открытые элементы
  • В модулях поддерживается код, выполняемый при загрузке и выгрузке
  • Поддерево модулей может быть выгружено из системы.
  • Существуют объекты с инкапсуляцией, наследованием, виртуальными методами
  • Объекты обладают наследованием, вирт. методами и инакпсуляцией
  • Объекты имеют свою функцию для реализации цикла обработки событий. Они аналогичны по поведению задачам в операционной системе
  • Объекты или процедуры (не знаю, что) реального времени могут выполняться во время сборки мусора, но не могут обращаться к динамическим объектам
  • тип ANY может вместить любой тип, описываемый указателем
  • Конструкция WITH позволяет осуществлять ветвление в зависимости от типа объекта.
  • имеется рефлексия
  • по состоянию на 2019-09-10, есть препроцессор с #IF, блок должен полностью помещаться внутри модуля.
  • имеются перечисления
  • есть перегрузка операций

Условная компиляция

Ищи в исходниках "conditional compilation" и смотри также Некоторые опции компилятора

Вызов функций с переменным числом аргументов

Преобразование типов

Универсальный тип ANY

Адресная арифметика

Операция взятия адреса

Рефлексия

Немного о строках

Особые виды массивов

 
ARRAY [*] - без указания типов - есть в FoxArrayBase.Mod

Перечисления

 
Class* = ENUM Char*,Object*, String*, Integer*, Float*, Boolean*, Enum*, Name*, Range*, Set* END;
(* И далее используем так: *)
Class.Char

Из истории FoxParser и FoxScanner

Мелочи

Ключевые слова и зарезервированные идентификаторы в нижнем регистре

В ЯОС допустим нижний регистр зарезервированных идентификаторов. Как я понял, если первое слово в программе (т.е. module) - в нижнем регистре, то компилятор Fox переходит в нижний регистр и все остальные системные «слова», включая и имена встроенных функций, тоже должны быть в нижнем регистре. Но TFPET это не поддерживает, поэтому считаем, что этого и нет.

Препроцессор

Помимо условной компиляции, есть эрзац-препроцессор в виде опции компилятора replacements, см. Compiler.mod.

Недостатки

  • Два синтаксиса приведения типа, оба из которых совпадают с синтаксисом вызова функции.

Ссылки

Ссылки по АктОб | Перейти в группу ЯОС

Править - История - Печать - Последние изменения - Поиск
Редакция от 06.06.2020 17:14